package com.shrcl.engineerprocess.domain;

import com.shrcl.engineerprocess.domain.Engineer;
import com.shrcl.engineerprocess.domain.EngineerCostEstimationDocument;
import com.shrcl.engineerprocess.domain.EngineerCostEstimationStatus;
import com.shrcl.engineerprocess.domain.ServiceEstimateInfo;
import com.shrcl.engineerprocess.domain.ServiceRequestInfo;
import com.shrcl.engineerprocess.domain.TSCManCostCalc;
import com.shrcl.engineerprocess.domain.TSCServiceTypeDefinition;
import com.shrcl.engineerprocess.domain.impl.EngineerCostEstimationImpl;
import com.shrcl.engineerprocess.domain.proxy.EngineerCostEstimationProxy;
import com.shrct.businessprocess.project.RCProject;
import edu.fudan.langlab.domain.document.IDocument;
import edu.fudan.langlab.domain.document.IDocumentContainer;
import edu.fudan.langlab.domain.workflow.BusinessProcess;
import edu.fudan.langlab.domain.workflow.IHasProcess;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import edu.fudan.mylang.pf.INamedModelObject;
import java.util.Collection;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = EngineerCostEstimationImpl.class)
public interface EngineerCostEstimation extends IModelObject, IHasProcess, INamedModelObject, IDocumentContainer {
  public abstract String getName();
  
  public abstract EngineerCostEstimation setName(final String name);
  
  public abstract String getCostEstID();
  
  public abstract EngineerCostEstimation setCostEstID(final String costEstID);
  
  public abstract ServiceRequestInfo getRequestInfo();
  
  public abstract EngineerCostEstimation setRequestInfo(final ServiceRequestInfo requestInfo);
  
  public abstract ServiceEstimateInfo getEstimateInfo();
  
  public abstract EngineerCostEstimation setEstimateInfo(final ServiceEstimateInfo estimateInfo);
  
  public abstract TSCServiceTypeDefinition getServiceTypes();
  
  public abstract EngineerCostEstimation setServiceTypes(final TSCServiceTypeDefinition serviceTypes);
  
  public abstract TSCManCostCalc getManCostCalc();
  
  public abstract EngineerCostEstimation setManCostCalc(final TSCManCostCalc manCostCalc);
  
  public abstract Double getFinalCostEst();
  
  public abstract EngineerCostEstimation setFinalCostEst(final Double finalCostEst);
  
  public abstract RCProject getProject();
  
  public abstract EngineerCostEstimation setProject(final RCProject project);
  
  public abstract BusinessProcess getBusinessProcess();
  
  public abstract EngineerCostEstimation setBusinessProcess(final BusinessProcess businessProcess);
  
  public abstract Engineer getPostSaleManager();
  
  public abstract EngineerCostEstimation setPostSaleManager(final Engineer postSaleManager);
  
  public abstract Engineer getTechnicalAssistant();
  
  public abstract EngineerCostEstimation setTechnicalAssistant(final Engineer technicalAssistant);
  
  public abstract Collection<EngineerCostEstimationDocument> getDocuments();
  
  public abstract EngineerCostEstimationDocument createAndAddtoDocuments();
  
  public abstract EngineerCostEstimationDocument createAndAddtoDocuments(final Procedure1<EngineerCostEstimationDocument> updater);
  
  public abstract EngineerCostEstimation removeFromDocuments(final EngineerCostEstimationDocument engineerCostEstimationDocument);
  
  public abstract EngineerCostEstimation removeAllDocuments();
  
  public abstract String getComments();
  
  public abstract EngineerCostEstimation setComments(final String comments);
  
  public abstract IDocument createDocument(final Procedure1<? super IDocument> init);
  
  public abstract void removeDocument(final IDocument document);
  
  public abstract BusinessProcess getProcess();
  
  public abstract String getEntityName();
  
  public abstract EngineerCostEstimationStatus getStatus();
  
  public abstract void start();
  
  public abstract void submit();
  
  public abstract void approve();
  
  public abstract void connectToCBD(final RCProject project);
  
  public abstract void cBDKickOff();
  
  public abstract void engineerProjectKickOffNotify();
  
  public abstract Boolean isCreated();
  
  public abstract Boolean isEstimating();
  
  public abstract Boolean isApproved();
  
  public abstract Boolean isCBDConnected();
  
  public abstract Boolean isCBDKickedOff();
  
  public abstract Boolean isServiceProjectKickedOffNotified();
  
  public abstract EngineerCostEstimationProxy toProxy();
}
